package sv.com.renacempleo.dao.red.vinculacion;

import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;

import sv.com.renacempleo.dao.BaseDaoImpl;
import sv.com.renacempleo.dto.red.vinculacion.RedEstadoSeguimientoOferta;
import sv.com.renacempleo.exception.WebException;

public class RedEstadoSeguimientoOfertaDaoImpl extends BaseDaoImpl implements RedEstadoSeguimientoOfertaDao{

	@SuppressWarnings("unchecked")
	@Override
	public List<Object[]> findAllEstadosByOferta(Long redOfertaId)
			throws WebException {
		DetachedCriteria criteria = DetachedCriteria.forClass(RedEstadoSeguimientoOferta.class);
		criteria.createAlias("redOferta", "redOferta");
		criteria.createAlias("ctgEstadoVacanteVinculacion", "ctgEstadoVacanteVinculacion");
		criteria.add(Restrictions.eq("redOferta.redOfertaId", redOfertaId));
		criteria.addOrder(Order.asc("redEstadoSeguimientoOfertaId"));
		criteria.setProjection(Projections.projectionList()
				.add(Projections.property("redEstadoSeguimientoOfertaId"))
				.add(Projections.property("redEstadoSeguimientoOfertaObservacion"))
				.add(Projections.property("ctgEstadoVacanteVinculacion.ctgEstadoVacanteVinculacionId"))
				.add(Projections.property("ctgEstadoVacanteVinculacion.ctgEstadoVacanteVinculacionNombre"))
			);
		return (List<Object[]>) findByCriteria(criteria);
	}

}
